import { Connector } from "cax-connector";
import { API_EVENT, IReq, IRes } from "../interface";
import { v4 as uuidv4 } from "uuid";
import { devtool } from "cax-base";

export function mesh_remesh(
  this: Connector,
  EntityId: number,
  MeshIds: Array<number>,
  MeshSize: number,
  EleType: string,
  sizeType: string,
  refinementParams: any
) {
  if (this.client == null) return Promise.reject("socket未初始化");
  const req: IReq = {
    Topic: "api",
    Type: API_EVENT.MESH_REMESH,
    // todo 后续需要传入类型
    Params: {
      EntityId,
      MeshIds,
      MeshSize,
      EleType,
      sizeType,
      refinementParams,
    },
    Req: 1,
    Res: 0,
    Tag: uuidv4(),
  };
  this.client.emit("api", req);
  return new Promise((resolve, reject) => {
    this.client?.once(req.Tag, (ev: IRes) => {
      devtool.success("mesh_remesh", ev);
      if (ev.Status === 0) {
        resolve(ev.Result.FilePath);
      } else {
        reject(ev.Errmsg);
      }
    });
  });
}
